﻿using SWBetongXaydung.GUI.Common;
using System;
using System.Windows.Forms;

namespace SWBetongXaydung.GUI
{
    public partial class FormMain : Form
    {
        private BaseUserControl GetActiveBaseUC()
        {
            try { return pnlMain.Controls[0] as BaseUserControl; }
            catch { return null; }
        }

        #region public DAL.Models.NguoiSuDung NguoiSuDung {get; private set;} // Người dùng đang tác nghiệp
        /// <summary>
        /// Người sử dụng hiện tại của chương trình
        /// </summary>
        
        public DAL.NguoiSuDung NguoiSuDung { get; private set; }

        #endregion
       

        private void tmrClientClock_Tick(object sender, EventArgs e)
        {
            lblClientDateTime.Text = System.DateTime.Now.ToString("dddd, dd/MM/yyyy - HH:mm");
        }

        public FormMain()
        {
            InitializeComponent();
            DangXuat();
        }

        #region Chức năng Hệ thống
        private void miHeThong_DangNhap_Click(object sender, EventArgs e)
        {
            var frm = new HeThong.FormDangNhap();
            if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                this.DangNhapTheo(frm.NguoiSuDung);
            }
        }

        public void DangXuat()
        {
            this.NguoiSuDung = null;
            lblLoginStatus.Text = "Chưa đăng nhập";

            miHeThong_DangNhap.Visible = true;
            miHeThong_DangXuat.Visible = false;
            miHeThong_DoiMatKhau.Visible = false;
            miHeThong_QuanLyNguoiDung.Visible = false;

            miDuLieu.Visible = false;
            miTacNghiep.Visible = false;


            this.Text = "QUẢN LÝ BÊ TÔNG - XÂY DỰNG";
            pnlMain.Controls.Clear();
            pnlMain.Controls.Add(new HeThong.UcWelcome() { Dock = DockStyle.Fill });

        }

        public void DangNhapTheo(DAL.NguoiSuDung nguoiSuDung)
        {
            #region Cập nhật giao diện
            this.NguoiSuDung = nguoiSuDung;
            lblLoginStatus.Text = string.Format("Đã đăng nhập ({0} - {1})",
                this.NguoiSuDung.TenDangNhap, this.NguoiSuDung.VaiTroString);

            miHeThong_DangNhap.Visible = false;
            miHeThong_DangXuat.Visible = true;
            miHeThong_DoiMatKhau.Visible = true;
            miDuLieu.Visible = true;
            miTacNghiep.Visible = true;
            var isAdmin = nguoiSuDung.LaQuanTriHeThong;
            miHeThong_QuanLyNguoiDung.Visible = isAdmin;

            //miDuLieu.Visible = !isAdmin;
            //miTacNghiep.Visible = !isAdmin;
            #endregion

            #region Nạp dữ liệu ban đầu
            // 1. Nạp danh sách Năm học, học kỳ

            // 2. SetHocKy
            #endregion
        }

        private void miHeThong_DangXuat_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn có chắc chắn muốn đăng xuất không?", "Chú ý", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
            {
                DangXuat();
            }
        }

        private void miHeThong_QuanLyNguoiDung_Click(object sender, EventArgs e)
        {
            var dlg = new HeThong.FormQuanLyNguoiDung();
            dlg.ShowDialog(this);
        }

        private void miHeThong_Thoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        #endregion

        #region Trợ giúp
        private void miTroGiup_HuongDan_Click(object sender, EventArgs e)
        {
            try
            {
                System.Diagnostics.Process.Start("UserGuide.pdf");
            }
            catch (Exception ex)
            {
                MessageBox.Show("File UserGuide.pdf không được tìm thấy trong hệ thống. Chi tiết: " + ex.Message, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        #endregion

        private void miTroGiup_GioiThieuChuongTrinh_Click(object sender, EventArgs e)
        {

        }

    }
}
